package ru.amse.ilyin.diagram;

/**
 * Abstract renderer. A set of drawing methods.
 *
 * @author Alexander Ilyin
 */
public interface Renderer {
	/**
	 * Draws an oval.
	 * 
	 * @param x x coordinate of the upper left corner of the oval
	 * @param y y coordinate of the upper left corner of the oval
	 * @param width width of the oval
	 * @param height height of the oval
	 */
	void drawOval(int x, int y, int width, int height);
	
	/**
	 * Draws a straight line.
	 * 
	 * @param x1 x coordinate of the first point
	 * @param y1 y coordinate of the first point
	 * @param x2 x coordinate of the second point
	 * @param y2 y coordinate of the second point
	 */
	void drawLine(int x1, int y1, int x2, int y2);
	
	/**
	 * Draws a specified text. 
	 * 
	 * @param string text to be drawn
	 * @param x x coordinate of the bottom left corner of the text   
	 * @param y y coordinate of the bottom left corner of the text
	 */
	void drawString(String string, int x, int y);
	
	/**
	 * Draws a rectangle.
	 * 
	 * @param x x coordinate of the upper left corner of the rectangle
	 * @param y y coordinate of the upper left corner of the rectangle
	 * @param width width of the rectangle
	 * @param height height of the rectangle
	 */
	void drawRectangle(int x, int y, int width, int height);
}
